package com.etalk.crm.dao;

import com.etalk.crm.pojo.StudentReportCustomize;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author Jordan
 */
@Mapper
public interface StudentReportCustomizeMapper {

    /**
     * 生成学习报表数据
     * @param record 报表数据
     * @return 记录数
     */
    int insertBatchReportList(StudentReportCustomize record);

    /**
     * 查询月报表部分信息：月完成课数，月应上课数，被点名次数
     * @param personId 学员id
     * @param startTime 学习报表开始时间
     * @param endTime 学习报表结束时间
     * @return 结果
     */
    StudentReportCustomize selectPersonAndClassHourInfoByCustomize(@Param("personId") int personId,@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查询月报中错题本中出现的语法、词汇、发音出现的次数
     * @param personId 学员id
     * @param startTime 学习报表开始时间
     * @param endTime 学习报表结束时间
     * @return 结果
     */
    StudentReportCustomize selectWrongQuestionInfoByCustomize(@Param("personId") int personId,@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查询月报表上课最多的常用老师名称和图像，没有常用老师的不管
     * @param personId 学员id
     * @param startTime 学习报表开始时间
     * @param endTime 学习报表结束时间
     * @return 结果
     */
    StudentReportCustomize selectCommonTeacherInfoByCustomize(@Param("personId") int personId,@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查询用户订单所有有效订单的剩余课时之和
     * @param personId 学员id
     * @param startTime 学习报表开始时间
     * @param endTime 学习报表结束时间
     * @return 结果
     */
    StudentReportCustomize selectOrderRemainHoursByCustomize(@Param("personId") int personId,@Param("startTime") Date startTime, @Param("endTime") Date endTime);
}
